import { message } from "antd";
import moment from 'moment'
// 将年月的日期转换成为带有 年-月-日 时-分-秒的格式
const toDateString = (beginTime: string, endTime)=>{
    let month = parseInt(endTime.split('-')[1]);
    let year = parseInt(endTime.split('-')[0]);
    beginTime = beginTime + '-01 00:00:00';
    switch (month) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            endTime = endTime + '-31 23:59:59';
            break;
        case 2:
            if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0) {
                endTime = endTime + '-29 23:59:59';
            } else {
                endTime = endTime + '-28 23:59:59';
            }
            break;
        default:
            endTime = endTime + '-30 23:59:59';
            break;
    }
    return [beginTime, endTime];
}
// 检查一个对象中是否存在有效值
const checkObj = (object: any):boolean => {
    console.log(object);
    // 有条件按照条件来(不包括品牌和周期)
    // 没有条件，1：什么条件都没有，提醒一个月
    // 2：只有brandCode，提醒6个月
    // ---- 这里判断是否有条件
    for (let key in object) {
        if (object[key] && !(object[key] instanceof Array) && key !== 'brandCode' && key !== 'checkTime') {
            // console.log('---------');
            return true;
        } else if ((object[key] instanceof Array) && object[key].length > 0 && key !== 'checkTime') {
            // console.log('---------');
            return true;
        }
    }
    // 这里处理没有条件的情况2
    if (object['brandCode']) {
        // 判断周期是否只有六个月
        if (object.checkTime.length > 0) {
            let syear = parseInt(object.checkTime[0].format('YYYY-MM').split('-')[0]);
            let smonth = parseInt(object.checkTime[0].format('YYYY-MM').split('-')[1]);
            let eyear = parseInt(object.checkTime[1].format('YYYY-MM').split('-')[0]);
            let emonth = parseInt(object.checkTime[1].format('YYYY-MM').split('-')[1]);
            if ((eyear - syear) * 12 + emonth - smonth >= 6) {
                message.error('请筛选周期，时间不能超过6个月');
                return false;
            }
        } else {
            message.error('请筛选周期，时间不能超过6个月');
            return false;
        }   
    } else if(object['checkTime'].length == 0) {
        message.error('请筛选周期，时间不能超过1个月');
        return false;
    } else {
        // 选择了周期，没有其它任何条件
        let syear = parseInt(object.checkTime[0].format('YYYY-MM').split('-')[0]);
        let smonth = parseInt(object.checkTime[0].format('YYYY-MM').split('-')[1]);
        let eyear = parseInt(object.checkTime[1].format('YYYY-MM').split('-')[0]);
        let emonth = parseInt(object.checkTime[1].format('YYYY-MM').split('-')[1]);
        if ((eyear - syear) * 12 + emonth - smonth >= 1) {
            message.error('请筛选周期，时间不能超过1个月');
            return false;
        }
        // message.error('凹凸曼');
        return true;
    }
    // return true;
    // }
}
// 传入一个时间区间，返回一个字符串
/**
 * @param startTime 开始时间 2019-08
 * @param endTime 结束时间 2020-11
 */
const timeToString = (startTime: string, endTime: string):string => {
    // 开始时间的年份和月份
    let syear = parseInt(startTime.split('-')[0]);
    let smonth = parseInt(startTime.split('-')[1]);
    // 结束时间的年份和月份
    let eyear = parseInt(endTime.split('-')[0]);
    let emonth = parseInt(endTime.split('-')[1]);
    // 要返回的字符串
    let str = `${syear}年${smonth}月`;
    // 如果当前月份到了13月，则要进1年并且月份归1
    if (smonth + 1 === 13) {
        syear += 1;
        smonth = 1;
    } else {
        smonth++;
    }
    // 当起始年份和起始月份均小于等于结束时间时，应当进行拼接字符串
    while (syear < eyear || syear === eyear && smonth <= emonth) {
        str += `,${syear}年${smonth}月`;
        smonth++;
        if (smonth == 13) {
            syear++;
            smonth = 1;
        }
    }
    console.log(str);
    return str
}
// 导出文件使用的方法
export {toDateString, checkObj, timeToString}